<?php

/**
 * Las tablas identificadas con
 * Gp_ = Genprog
 * Seguido una Iniciail T Para Tablas y S para Seguridad
 * Luego indicar el nombre de la misma
 */

/**
 * GenProg Lenguaje de Consultas Basado en SQL
 *
 *
 * @author Carlos Peña <crash.madover@gmail.com>
 * @package application.libraries.orm.sql.tabla
 * @copyright (c) 2013, GenProg
 * @version v 1.0
 */
class TABLA extends SQL {

  private static $instancia = null;
  private $db;
  private $MODEL;

  public function __construct($MODEL = '', $DB) {

    if ($MODEL != '') {
      $this->MODEL = strtolower($MODEL);
    } else {
      $this->MODEL = MODEL;
    }
    if (isset($DB))
      $this->db = $DB;
  }

  /**
   * Obtener Instancia de la Clase Patrones
   *
   * @param       string      Consulta o Modelo
   * @param       object      Clase
   * @return      class
   */
  public static function Cargar($sModelo = '', $DB) {

    if (self::$instancia instanceof TABLA) {
      //echo 'Ya Fue Creado el Objeto';
    } else {
      self::$instancia = new TABLA($sModelo, $DB);
    }
    return self::$instancia;
  }

  public function Generar() {
    if ($this->MODEL == MODEL) {
      $this->GenerarTablas();
    } else {
      include_once (APPPATH . 'models/' . MODEL . $this->MODEL . '.php');
      $Class = $this->MODEL;
      $oModelo = new $Class();
      echo "HOLLA";
      $this->_GenerarTB($oModelo);
    }
    return self::$instancia;
  }

  /**
   * Crear Tablas
   * @return boolean
   */
  function Ejecutar() {
    $sCrear = '';
    $sCambiar = '';

    foreach ($this->crear as $sC => $sV) {
      $this->db->query($sV);
    }
    foreach ($this->cambiar as $sC => $sV) {
      $this->db->query($sV);
    }
    
    //$this -> db -> query($sCambiar);
    //$this->db->query($this->Generar_Esquema_Seguridad());
    $lst = $this->Generar_Esquema_Seguridad();
    foreach ($lst as $sC => $sV) {
      $this->db->query($sV);
    }
    
    $this->db->query($this->ObtenerSeguridad());
    
    $this->db->query($this->ObetenerClavesForaneas());
    
    return TRUE;
  }

  function Ver() {
    print('<pre>');
    $arr = array('Create' => $this->crear, 'Alter' => $this->cambiar, 'Clave_Foraneas' => $this->clave_foraneas, 'Seguridad' => $this->seguridad);
    print_r($arr);
    print('</pre>');
  }

  
  function ObtenerSQL() {
    return array('Create' => $this->crear, 'Alter' => $this->cambiar, 'Clave_Foraneas' => $this->clave_foraneas, 'Seguridad' => $this->seguridad);
  }

}

?>
